package org.dromara.code.service

import org.dromara.code.domain.vo.CodeProductVo
import org.dromara.code.domain.bo.CodeProductBo
import org.dromara.common.mybatis.core.page.TableDataInfo
import org.dromara.common.mybatis.core.page.PageQuery

/**
 * 一物一码产品类目Service接口
 *
 * @author Blutter J
 * @date 2025-08-07
 */
interface ICodeProductService {

    /**
     * 查询一物一码产品类目
     *
     * @param id 主键
     * @return 一物一码产品类目
     */
    fun queryById(id: Long): CodeProductVo?

    /**
     * 分页查询一物一码产品类目列表
     *
     * @param bo        查询条件
     * @param pageQuery 分页参数
     * @return 一物一码产品类目分页列表
     */
    fun queryPageList(bo: CodeProductBo, pageQuery: PageQuery): TableDataInfo<CodeProductVo>

    /**
     * 查询符合条件的一物一码产品类目列表
     *
     * @param bo 查询条件
     * @return 一物一码产品类目列表
     */
    fun queryList(bo: CodeProductBo): List<CodeProductVo>

    /**
     * 新增一物一码产品类目
     *
     * @param bo 一物一码产品类目
     * @return 是否新增成功
     */
    fun insertByBo(bo: CodeProductBo): Boolean

    /**
     * 修改一物一码产品类目
     *
     * @param bo 一物一码产品类目
     * @return 是否修改成功
     */
    fun updateByBo(bo: CodeProductBo): Boolean

    /**
     * 校验并批量删除一物一码产品类目信息
     *
     *@param ids     待删除的主键集合
     * @param isValid 是否进行有效性校验
     * @return 是否删除成功
     */
    fun deleteWithValidByIds(ids: List<Long>, isValid: Boolean): Boolean
}
